package org.huawei260.TiKu.ODsuanfa;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class A_2023A_2806__哈希表统计匹配的二元组个数 {

//	public class Main {
		public static void main(String[] args) {
			Scanner scanner = new Scanner(System.in);

			// 读取数组A的长度和数组A的值
			int M = scanner.nextInt();
			int[] A = new int[M];

			// 读取数组B的长度和数组B的值
			int N = scanner.nextInt();
			int[] B = new int[N];
			for (int i = 0; i < M; i++) {
				A[i] = scanner.nextInt();
			}
			for (int i = 0; i < N; i++) {
				B[i] = scanner.nextInt();
			}

			// 计算匹配的二元组个数
			int matchCount = countMatches(A, B);

			// 输出匹配的二元组个数
			System.out.println(matchCount);
		}

		/**
		 * 计算两个数组中匹配元素的二元组个数
		 *
		 * @param A 第一个数组
		 * @param B 第二个数组
		 * @return 匹配的二元组个数
		 */
		public static int countMatches(int[] A, int[] B) {
			// 使用HashMap统计数组A中每个元素的出现次数
			Map<Integer, Integer> countA = new HashMap<>();
			for (int num : A) {
				countA.put(num, countA.getOrDefault(num, 0) + 1);
			}

			// 使用变量累加匹配的二元组个数
			int matchCount = 0;

			// 遍历数组B，对于每个元素，检查它在数组A中的出现次数，并累加到matchCount
			for (int num : B) {
				if (countA.containsKey(num)) {
					matchCount += countA.get(num);
				}
			}

			return matchCount;
		}
	}
